using System.Collections.ObjectModel;
using System.Windows;

namespace FileUploader {
    public class Demo : DependencyObject {
        public string Name {
            get { return (string)GetValue(NameProperty); }
            set { SetValue(NameProperty, value); }
        }

        public string Description {
            get { return (string)GetValue(DescriptionProperty); }
            set { SetValue(DescriptionProperty, value); }
        }

        public bool IsEnabled {
            get { return (bool)GetValue(IsEnabledProperty); }
            set { SetValue(IsEnabledProperty, value); }
        }

        public bool ShowInApplication {
            get { return (bool)GetValue(ShowInApplicationProperty); }
            set { SetValue(ShowInApplicationProperty, value); }
        }



        // Using a DependencyProperty as the backing store for ShowInApplication.  
        // This enables animation, styling, binding, etc...
        public static readonly DependencyProperty ShowInApplicationProperty =
            DependencyProperty.Register("ShowInApplication",
                                        typeof(bool),
                                        typeof(Demo),
                                        new PropertyMetadata(false,
                                                             new PropertyChangedCallback(
                                                                 OnShowInApplicationChanged)));

        private static void OnShowInApplicationChanged(object sender, DependencyPropertyChangedEventArgs args) {
        }

        // Using a DependencyProperty as the backing store for IsEnabled.  
        // This enables animation, styling, binding, etc...
        public static readonly DependencyProperty IsEnabledProperty =
            DependencyProperty.Register("IsEnabled",
                                        typeof(bool),
                                        typeof(Demo),
                                        new PropertyMetadata(true,
                                                             new PropertyChangedCallback(
                                                                 OnIsEnabledChanged)));

        private static void OnIsEnabledChanged(object sender, DependencyPropertyChangedEventArgs args) {
        }

        // Using a DependencyProperty as the backing store for Description.  
        // This enables animation, styling, binding, etc...
        public static readonly DependencyProperty DescriptionProperty =
            DependencyProperty.Register("Description",
                                        typeof(string),
                                        typeof(Demo),
                                        new PropertyMetadata("",
                                                             new PropertyChangedCallback(
                                                                 OnDescriptionChanged)));

        private static void OnDescriptionChanged(object sender, DependencyPropertyChangedEventArgs args) {
        }

        // Using a DependencyProperty as the backing store for Name.  
        // This enables animation, styling, binding, etc...
        public static readonly DependencyProperty NameProperty =
            DependencyProperty.Register("Name",
                                        typeof(string),
                                        typeof(Demo),
                                        new PropertyMetadata("",
                                                             new PropertyChangedCallback(
                                                                 OnNameChanged)));

        private static void OnNameChanged(object sender, DependencyPropertyChangedEventArgs args) {
        }

        public static ObservableCollection<Demo> GetObservableCollection() {
            return new ObservableCollection<Demo>(){
                    new Demo{Name = "BedPans.flv"},
                    new Demo{Name = "Discharge.flv"},
                    new Demo{Name = "ShootTheLawyers.flv"}
                                                       };
        }
    }
}